home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Tool Chest / Development Tools & Languages / Macintosh Common Lisp Related / interfaces / QuickTime™ 1.5 interfaces / Components.lisp < prev    next >
Encoding:
Text File  |  1994-09-12  |  11.7 KB  |  296 lines  |  [TEXT/CCL2]

  1.  
  2. (in-package :TRAPS)             ;  
  3. ;  Created: Tuesday, October 13, 1992
  4. ;  Components.p
  5. ;  Pascal Interface to the Macintosh Libraries
  6. ;  Copyright Apple Computer, Inc. 1991, 1992
  7. ;  All rights reserved
  8.  
  9. ; $IFC UNDEFINED UsingIncludes
  10. ; $SETC UsingIncludes := 0
  11. ; $ENDC
  12.  
  13. ; $IFC NOT UsingIncludes
  14.  
  15. ; $ENDC
  16.  
  17. ; $IFC UNDEFINED UsingComponents
  18. ; $SETC UsingComponents := 1
  19.  
  20. ; $I+
  21. ; $SETC ComponentsIncludes := UsingIncludes
  22. ; $SETC UsingIncludes := 1
  23. ; $IFC UNDEFINED UsingTypes
  24.  
  25. (require-interface 'TYPES)      ; $I $$Shell(PInterfaces)Types.p
  26. ; $ENDC
  27. ; $IFC UNDEFINED UsingTypes
  28.  
  29. (require-interface 'MEMORY)     ; $I $$Shell(PInterfaces)Memory.p
  30. ; $ENDC
  31. ; $SETC UsingIncludes := ComponentsIncludes
  32.  
  33. (defconstant $gestaltComponentMgr :|cpnt|)
  34.  
  35. (defconstant $kAnyComponentType 0)
  36. (defconstant $kAnyComponentSubType 0)
  37. (defconstant $kAnyComponentManufacturer 0)
  38. (defconstant $kAnyComponentFlagsMask 0)
  39.  
  40. (defconstant $cmpWantsRegisterMessage #X80000000)
  41.  
  42. (defrecord ComponentDescription 
  43.    (componentType :OSTYPE)      ;  A unique 4-byte code indentifying the command set 
  44.    (componentSubType :OSTYPE)   ;  Particular flavor of this instance 
  45.    (componentManufacturer :OSTYPE);  Vendor indentification 
  46.    (componentFlags :SIGNED-LONG);  8 each for Component,Type,SubType,Manuf/revision 
  47.    (componentFlagsMask :SIGNED-LONG);  Mask for specifying which flags to consider in search, zero during registration 
  48.    )
  49.  
  50. (defrecord ResourceSpec 
  51.    (resType :OSTYPE)            ;  4-byte code  
  52.    (resId :SIGNED-INTEGER)      ;     
  53.    )
  54.  
  55. (def-mactype :COMPONENTRESOURCEPTR (find-mactype :POINTER))
  56. (def-mactype :COMPONENTRESOURCEHANDLE (find-mactype :HANDLE))
  57. (defrecord (ComponentResource :handle) 
  58.    (cd :COMPONENTDESCRIPTION)   ;  Registration parameters 
  59.    (component :RESOURCESPEC)    ;  resource where Component code is found 
  60.    (componentName :RESOURCESPEC);  name string resource 
  61.    (componentInfo :RESOURCESPEC);  info string resource 
  62.    (componentIcon :RESOURCESPEC);  icon resource 
  63.    )
  64.  
  65. (def-mactype :COMPONENT (find-mactype :POINTER))
  66. (def-mactype :COMPONENTINSTANCE (find-mactype :POINTER))
  67.  
  68. ;  Structure received by Component:  
  69. (defrecord ComponentParameters 
  70.    (flags :CHARACTER)           ;  call modifiers: sync/async, deferred, immed, etc 
  71.    (paramSize :CHARACTER)       ;  size in bytes of actual parameters passed to this call 
  72.    (what :SIGNED-INTEGER)       ;  routine selector, negative for Component management calls 
  73.    (params (:ARRAY :SIGNED-LONG 1));  actual parameters for the indicated routine 
  74.    )
  75.  
  76. (def-mactype :COMPONENTRESULT (find-mactype :SIGNED-LONG))
  77.  
  78. (def-mactype :COMPONENTROUTINE (find-mactype :POINTER))
  79.  
  80. (def-mactype :COMPONENTFUNCTION (find-mactype :POINTER))
  81.  
  82. ; ******************************************************
  83. ; * Required Component routines
  84. ; ******************************************************
  85.  
  86. (defconstant $kComponentOpenSelect -1);  ComponentInstance for this open 
  87. (defconstant $kComponentCloseSelect -2);  ComponentInstance for this close 
  88. (defconstant $kComponentCanDoSelect -3);  selector # being queried 
  89. (defconstant $kComponentVersionSelect -4);  no params 
  90. (defconstant $kComponentRegisterSelect -5);  no params 
  91. (defconstant $kComponentTargetSelect -6);  ComponentInstance for top of call chain 
  92.  
  93. ;  Set Default Component flags 
  94. (defconstant $defaultComponentIdentical 0)
  95. (defconstant $defaultComponentAnyFlags 1)
  96. (defconstant $defaultComponentAnyManufacturer 2)
  97. (defconstant $defaultComponentAnySubType 4)
  98. (defconstant $defaultComponentAnyFlagsAnyManufacturer (+ #$DEFAULTCOMPONENTANYFLAGS #$DEFAULTCOMPONENTANYMANUFACTURER))
  99. (defconstant $defaultComponentAnyFlagsAnyManufacturerAnySubType (+ #$DEFAULTCOMPONENTANYFLAGS (+ #$DEFAULTCOMPONENTANYMANUFACTURER #$DEFAULTCOMPONENTANYSUBTYPE)))
  100.  
  101. ;  errors from component manager & components 
  102. (defconstant $invalidComponentID -3000)
  103. (defconstant $validInstancesExist -3001)
  104. (defconstant $componentNotCaptured -3002)
  105. (defconstant $componentDontRegister -3003)
  106.  
  107. (defconstant $badComponentInstance #X80008001)
  108. (defconstant $badComponentSelector #X80008002)
  109.  
  110. ;  *******************************************************
  111. ; *                                                     *
  112. ; *              APPLICATION LEVEL CALLS                *
  113. ; *                                                     *
  114. ; *******************************************************
  115. ; * Component Database Add, Delete, and Query Routines 
  116. ; *******************************************************
  117. ;  
  118.  
  119. (deftrap _REGISTERCOMPONENT ((CD :COMPONENTDESCRIPTION) (COMPONENTENTRYPOINT :POINTER) (GLOBAL :SIGNED-INTEGER) (COMPONENTNAME :HANDLE) (COMPONENTINFO :HANDLE) (COMPONENTICON :HANDLE))
  120.    (:STACK (:POINTER :PRIVATECOMPONENTRECORD))
  121.    (:STACK-TRAP #xA82A :D0 1 CD COMPONENTENTRYPOINT GLOBAL COMPONENTNAME COMPONENTINFO COMPONENTICON))
  122.  
  123. (deftrap _REGISTERCOMPONENTRESOURCE ((TR (:HANDLE :COMPONENTRESOURCE)) (GLOBAL :SIGNED-INTEGER))
  124.    (:STACK (:POINTER :PRIVATECOMPONENTRECORD))
  125.    (:STACK-TRAP #xA82A :D0 18 TR GLOBAL))
  126.  
  127. (deftrap _UNREGISTERCOMPONENT ((ACOMPONENT (:POINTER :PRIVATECOMPONENTRECORD)))
  128.    (:STACK :SIGNED-INTEGER)
  129.    (:STACK-TRAP #xA82A :D0 2 ACOMPONENT))
  130.  
  131.  
  132. (deftrap _FINDNEXTCOMPONENT ((ACOMPONENT (:POINTER :PRIVATECOMPONENTRECORD)) (LOOKING :COMPONENTDESCRIPTION))
  133.    (:STACK (:POINTER :PRIVATECOMPONENTRECORD))
  134.    (:STACK-TRAP #xA82A :D0 4 ACOMPONENT LOOKING))
  135.  
  136. (deftrap _COUNTCOMPONENTS ((LOOKING :COMPONENTDESCRIPTION))
  137.    (:STACK :SIGNED-LONG)
  138.    (:STACK-TRAP #xA82A :D0 3 LOOKING))
  139.  
  140.  
  141. (deftrap _GETCOMPONENTINFO ((ACOMPONENT (:POINTER :PRIVATECOMPONENTRECORD)) (CD :COMPONENTDESCRIPTION) (COMPONENTNAME :HANDLE) (COMPONENTINFO :HANDLE) (COMPONENTICON :HANDLE))
  142.    (:STACK :SIGNED-INTEGER)
  143.    (:STACK-TRAP #xA82A :D0 5 ACOMPONENT CD COMPONENTNAME COMPONENTINFO COMPONENTICON))
  144.  
  145. (deftrap _GETCOMPONENTLISTMODSEED NIL
  146.    (:STACK :SIGNED-LONG)
  147.    (:STACK-TRAP #xA82A :D0 6))
  148.  
  149. ;  *******************************************************
  150. ; * Component Instance Allocation and dispatch routines 
  151. ; *******************************************************
  152. ;  
  153.  
  154. (deftrap _OPENCOMPONENT ((ACOMPONENT (:POINTER :PRIVATECOMPONENTRECORD)))
  155.    (:STACK (:POINTER :PRIVATECOMPONENTINSTANCERECORD))
  156.    (:STACK-TRAP #xA82A :D0 7 ACOMPONENT))
  157.  
  158. (deftrap _CLOSECOMPONENT ((ACOMPONENTINSTANCE (:POINTER :PRIVATECOMPONENTINSTANCERECORD)))
  159.    (:STACK :SIGNED-INTEGER)
  160.    (:STACK-TRAP #xA82A :D0 8 ACOMPONENTINSTANCE))
  161.  
  162.  
  163. (deftrap _GETCOMPONENTINSTANCEERROR ((ACOMPONENTINSTANCE (:POINTER :PRIVATECOMPONENTINSTANCERECORD)))
  164.    (:STACK :SIGNED-INTEGER)
  165.    (:STACK-TRAP #xA82A :D0 10 ACOMPONENTINSTANCE))
  166.  
  167. ;   direct calls to the Components  
  168.  
  169. (deftrap _COMPONENTFUNCTIONIMPLEMENTED ((CI (:POINTER :PRIVATECOMPONENTINSTANCERECORD)) (FTNNUMBER :SIGNED-INTEGER))
  170.    (:STACK :SIGNED-LONG)
  171.    (:STACK-TRAP #xA82A :D0 0 CI FTNNUMBER ((+ (ASH 2 16) 65533) :SIGNED-LONGINT)))
  172.  
  173. (deftrap _GETCOMPONENTVERSION ((CI (:POINTER :PRIVATECOMPONENTINSTANCERECORD)))
  174.    (:STACK :SIGNED-LONG)
  175.    (:STACK-TRAP #xA82A :D0 0 CI ((+ (ASH 0 16) 65532) :SIGNED-LONGINT)))
  176.  
  177. (deftrap _COMPONENTSETTARGET ((CI (:POINTER :PRIVATECOMPONENTINSTANCERECORD)) (TARGET (:POINTER :PRIVATECOMPONENTINSTANCERECORD)))
  178.    (:STACK :SIGNED-LONG)
  179.    (:STACK-TRAP #xA82A :D0 0 CI TARGET ((+ (ASH 4 16) 65530) :SIGNED-LONGINT)))
  180.  
  181. ; ****************************************************
  182. ; *                                                    *
  183. ; *               CALLS MADE BY Components             *
  184. ; *                                                    *
  185. ; ******************************************************
  186.  
  187. ;  *******************************************************
  188. ; * Component Management routines
  189. ; *******************************************************
  190. ;  
  191.  
  192. (deftrap _SETCOMPONENTINSTANCEERROR ((ACOMPONENTINSTANCE (:POINTER :PRIVATECOMPONENTINSTANCERECORD)) (THEERROR :SIGNED-INTEGER))
  193.    NIL
  194.    (:STACK-TRAP #xA82A :D0 11 ACOMPONENTINSTANCE THEERROR))
  195.  
  196.  
  197. (deftrap _GETCOMPONENTREFCON ((ACOMPONENT (:POINTER :PRIVATECOMPONENTRECORD)))
  198.    (:STACK :SIGNED-LONG)
  199.    (:STACK-TRAP #xA82A :D0 16 ACOMPONENT))
  200.  
  201. (deftrap _SETCOMPONENTREFCON ((ACOMPONENT (:POINTER :PRIVATECOMPONENTRECORD)) (THEREFCON :SIGNED-LONG))
  202.    NIL
  203.    (:STACK-TRAP #xA82A :D0 17 ACOMPONENT THEREFCON))
  204.  
  205.  
  206. (deftrap _OPENCOMPONENTRESFILE ((ACOMPONENT (:POINTER :PRIVATECOMPONENTRECORD)))
  207.    (:STACK :SIGNED-INTEGER)
  208.    (:STACK-TRAP #xA82A :D0 21 ACOMPONENT))
  209.  
  210. (deftrap _CLOSECOMPONENTRESFILE ((REFNUM :SIGNED-INTEGER))
  211.    (:STACK :SIGNED-INTEGER)
  212.    (:STACK-TRAP #xA82A :D0 24 REFNUM))
  213.  
  214. ;  *******************************************************
  215. ; * Component Instance Management routines
  216. ; *******************************************************
  217. ;  
  218.  
  219. (deftrap _GETCOMPONENTINSTANCESTORAGE ((ACOMPONENTINSTANCE (:POINTER :PRIVATECOMPONENTINSTANCERECORD)))
  220.    (:STACK :HANDLE)
  221.    (:STACK-TRAP #xA82A :D0 12 ACOMPONENTINSTANCE))
  222.  
  223. (deftrap _SETCOMPONENTINSTANCESTORAGE ((ACOMPONENTINSTANCE (:POINTER :PRIVATECOMPONENTINSTANCERECORD)) (THESTORAGE :HANDLE))
  224.    NIL
  225.    (:STACK-TRAP #xA82A :D0 13 ACOMPONENTINSTANCE THESTORAGE))
  226.  
  227.  
  228. (deftrap _GETCOMPONENTINSTANCEA5 ((ACOMPONENTINSTANCE (:POINTER :PRIVATECOMPONENTINSTANCERECORD)))
  229.    (:STACK :SIGNED-LONG)
  230.    (:STACK-TRAP #xA82A :D0 14 ACOMPONENTINSTANCE))
  231.  
  232. (deftrap _SETCOMPONENTINSTANCEA5 ((ACOMPONENTINSTANCE (:POINTER :PRIVATECOMPONENTINSTANCERECORD)) (THEA5 :SIGNED-LONG))
  233.    NIL
  234.    (:STACK-TRAP #xA82A :D0 15 ACOMPONENTINSTANCE THEA5))
  235.  
  236.  
  237. (deftrap _COUNTCOMPONENTINSTANCES ((ACOMPONENT (:POINTER :PRIVATECOMPONENTRECORD)))
  238.    (:STACK :SIGNED-LONG)
  239.    (:STACK-TRAP #xA82A :D0 19 ACOMPONENT))
  240.  
  241. ;   useful helper routines for convenient method dispatching  
  242.  
  243. (deftrap _CALLCOMPONENTFUNCTION ((PARAMS :COMPONENTPARAMETERS) (FUNC :POINTER))
  244.    (:STACK :SIGNED-LONG)
  245.    (:STACK-TRAP #xA82A :D0 255 PARAMS FUNC))
  246.  
  247. (deftrap _CALLCOMPONENTFUNCTIONWITHSTORAGE ((STORAGE :HANDLE) (PARAMS :COMPONENTPARAMETERS) (FUNC :POINTER))
  248.    (:STACK :SIGNED-LONG)
  249.    (:STACK-TRAP #xA82A :D0 255 STORAGE PARAMS FUNC))
  250.  
  251. (deftrap _DELEGATECOMPONENTCALL ((ORIGINALPARAMS :COMPONENTPARAMETERS) (CI (:POINTER :PRIVATECOMPONENTINSTANCERECORD)))
  252.    (:STACK :SIGNED-LONG)
  253.    (:STACK-TRAP #xA82A :D0 36 ORIGINALPARAMS CI))
  254.  
  255.  
  256. (deftrap _SETDEFAULTCOMPONENT ((ACOMPONENT (:POINTER :PRIVATECOMPONENTRECORD)) (FLAGS :SIGNED-INTEGER))
  257.    (:STACK :SIGNED-INTEGER)
  258.    (:STACK-TRAP #xA82A :D0 30 ACOMPONENT FLAGS))
  259.  
  260. (deftrap _OPENDEFAULTCOMPONENT ((COMPONENTTYPE :OSTYPE) (COMPONENTSUBTYPE :OSTYPE))
  261.    (:STACK (:POINTER :PRIVATECOMPONENTINSTANCERECORD))
  262.    (:STACK-TRAP #xA82A :D0 33 COMPONENTTYPE COMPONENTSUBTYPE))
  263.  
  264. (deftrap _CAPTURECOMPONENT ((CAPTUREDCOMPONENT (:POINTER :PRIVATECOMPONENTRECORD)) (CAPTURINGCOMPONENT (:POINTER :PRIVATECOMPONENTRECORD)))
  265.    (:STACK (:POINTER :PRIVATECOMPONENTRECORD))
  266.    (:STACK-TRAP #xA82A :D0 28 CAPTUREDCOMPONENT CAPTURINGCOMPONENT))
  267.  
  268. (deftrap _UNCAPTURECOMPONENT ((ACOMPONENT (:POINTER :PRIVATECOMPONENTRECORD)))
  269.    (:STACK :SIGNED-INTEGER)
  270.    (:STACK-TRAP #xA82A :D0 29 ACOMPONENT))
  271.  
  272. (deftrap _REGISTERCOMPONENTRESOURCEFILE ((RESREFNUM :SIGNED-INTEGER) (GLOBAL :SIGNED-INTEGER))
  273.    (:STACK :SIGNED-LONG)
  274.    (:STACK-TRAP #xA82A :D0 20 RESREFNUM GLOBAL))
  275.  
  276. ; $ENDC                         ;  UsingComponents 
  277.  
  278. ; $IFC NOT UsingIncludes
  279.  
  280. ; $ENDC
  281.  
  282.  
  283. (export '($BADCOMPONENTSELECTOR $BADCOMPONENTINSTANCE $COMPONENTDONTREGISTER
  284.           $COMPONENTNOTCAPTURED $VALIDINSTANCESEXIST $INVALIDCOMPONENTID
  285.           $DEFAULTCOMPONENTANYFLAGSANYMANUFACTURERANYSUBTYPE
  286.           $DEFAULTCOMPONENTANYFLAGSANYMANUFACTURER $DEFAULTCOMPONENTANYSUBTYPE
  287.           $DEFAULTCOMPONENTANYMANUFACTURER $DEFAULTCOMPONENTANYFLAGS
  288.           $DEFAULTCOMPONENTIDENTICAL $KCOMPONENTTARGETSELECT
  289.           $KCOMPONENTREGISTERSELECT $KCOMPONENTVERSIONSELECT
  290.           $KCOMPONENTCANDOSELECT $KCOMPONENTCLOSESELECT $KCOMPONENTOPENSELECT
  291.           $CMPWANTSREGISTERMESSAGE $KANYCOMPONENTFLAGSMASK
  292.           $KANYCOMPONENTMANUFACTURER $KANYCOMPONENTSUBTYPE $KANYCOMPONENTTYPE
  293.           $GESTALTCOMPONENTMGR))
  294. (provide-interface 'Components)